<?php

/**
 * 应用函数库
 * @version 0.0
 * @package application
 * @subpackage application/helpers
 */

/**
 * 以下firePHP调试用，
 * 打印一个变量到控制台
 */
function fb($var) {
    $CI = &get_instance();
    $CI->firephp->fb($var);
}

/**
 * 以下firePHP调试用，
 * 打印最后执行的sql语句到控制台
 */
function fbq() {
    fb($this->db->sql());
}

//调试函数，格式化输出
if (!function_exists('p')) {

    function p($param) {
        $debug = get_last_debug();
        echo '<pre>';
        echo 'file:' . $debug['file'] . '<br>line: ' . $debug['line'] . '<br>';
        echo '================================BEGIN================================';
        echo '<br/>';
        var_dump($param);
        echo '<br/>';
        echo '================================END.=================================';
        echo '</pre>';
    }

}

//调试函数，格式化输出并退出
if (!function_exists('pe')) {

    function pe() {
        $debug = get_last_debug();
        $param = func_get_args();
        echo '<pre>';
        echo 'file:' . $debug['file'] . '<br>line: ' . $debug['line'] . '<br>';
        echo '================================BEGIN================================';
        echo '<br/>';
        echo '</pre>';
        foreach ($param as $v) {
            echo '<pre>';
            var_dump($v);
            echo '<br/>';
            echo '</pre>';
        }
        echo '<br/>';
        echo '<pre>';
        echo '================================END，EXIT================================';
        echo '</pre>';
        exit;
    }

}

if (!function_exists('get_last_debug')) {

    function get_last_debug($num = '1') {
        $debug = debug_backtrace();
        if (count($debug) >= $num) {
            $debug = $debug[$num];
        } else {
            $debug = array_pop($debug);
        }
        $data = array('file' => $debug['file'], 'line' => $debug['line']);
        return $data;
    }

}

/*
 * loadModel new模型
 * @author  Tommy
 * 用法loadModel('item_type_model','item_news_model');
 */
if (!function_exists('loadModel')) {

    function loadModel() {
        $numargs = func_get_args();
        foreach ($numargs as $key => $value) {
            $data[$value] = new $value();
        }
        return $data;
    }

}

if (!function_exists('autoLoadClass')) {

    function autoLoadClass($class, $name) {

        $CI = & get_instance();
        if (isset($class->$name)) {
            return ($class->$name);
        } elseif (isset($CI->$name)) {
            return ($CI->$name);
        } else {
            $tmp = explode('_', $name);
            //自动加载数据模型
            if (strtolower(end($tmp)) == 'model') {
                if (isset($class->$name)) {
                    return true;
                } else {
                    $class->load->model($name); //同时给load对象加载对象，保证view也可以直接使用model
                    return new $name;
                }
            } else {
                return false;
            }
        }
    }

}

//去掉excel中所有空格，包括换行
if (!function_exists('trimAll')) {

    function trimAll($str) {
        $search = array(" ", " ", "\n", "\r", "\t");
        $replace = array("", "", "", "", "");
        return str_replace($search, $replace, $str);
    }

}

//去掉excel中所有空格，包括换行
if (!function_exists('extend_implode')) {

    function extend_implode($param, $glue = ',') {
        $res = '';
        $param = array_filter($param);
        if (!empty($param)) {
            $res = $glue . implode($glue, $param) . $glue;
        }
        return $res;
    }

}

if (!function_exists('array_column_merge')) {

    /**
     * 取二维数组中的两列组合成新数组
     * @param type $data
     * @param type $key
     * @param type $value
     */
    function array_column_combine($data, $key, $value) {
        $keyArray = array_column($data, $key);
        $valueArray = array_column($data, $value);
        return array_combine($keyArray, $valueArray);
    }

}

if (!function_exists('extend_strtotime')) {

    /**
     * 扩展strtotime方法。兼容'2018/01/02和2018.01.02'
     * @param type $date
     * @return type
     */
    function extend_strtotime($date) {
        $date = str_replace('.', '-', $date);
        $date = str_replace('/', '-', $date);
        return strtotime($date);
    }

}
